<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>从家里到阿里，学弟超神的一年 | 鱼皮的编程宝典</title>
    <meta name="generator" content="VuePress 1.9.10">
    <link rel="icon" href="/favicon.ico">
    <script>
        var _hmt = _hmt || [];
        (function() {
          var hm = document.createElement("script");
          hm.src = "https://hm.baidu.com/hm.js?2675818a983a3131404cee835018f016";
          var s = document.getElementsByTagName("script")[0]; 
          s.parentNode.insertBefore(hm, s);
        })();
      </script>
    <meta name="description" content="贴心的编程学习路线，全面的编程知识百科">
    <meta property="article:modified_time" content="2023-11-11T12:17:47.000Z">
    <meta property="og:site_name" content="鱼皮的编程宝典">
    <meta property="og:title" content="从家里到阿里，学弟超神的一年">
    <meta property="og:type" content="article">
    <meta property="og:url" content="https://codefather.cn/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/">
    <meta name="twitter:title" content="从家里到阿里，学弟超神的一年">
    <meta name="twitter:url" content="https://codefather.cn/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:label1" content="Written by">
    <meta name="twitter:label2" content="Filed under">
    <meta name="twitter:data2" content="程序员, 编程, 计算机">
    <meta property="article:tag" content="程序员">
    <meta name="keywords" content="程序员鱼皮, 编程学习路线, 编程知识百科, Java, 编程导航, 前端, 开发, 编程分享, 项目, IT, 求职, 面经">
    
    <link rel="preload" href="/assets/css/0.styles.40c15e22.css" as="style"><link rel="preload" href="/assets/js/app.12ab4756.js" as="script"><link rel="preload" href="/assets/js/2.fd06b53e.js" as="script"><link rel="preload" href="/assets/js/308.ef2f52b3.js" as="script"><link rel="prefetch" href="/assets/js/1.17ea1209.js"><link rel="prefetch" href="/assets/js/10.d9532d8f.js"><link rel="prefetch" href="/assets/js/100.064ea126.js"><link rel="prefetch" href="/assets/js/101.d64c5b33.js"><link rel="prefetch" href="/assets/js/102.5e29a62c.js"><link rel="prefetch" href="/assets/js/103.59ad6cd7.js"><link rel="prefetch" href="/assets/js/104.ae4763e8.js"><link rel="prefetch" href="/assets/js/105.2a9124be.js"><link rel="prefetch" href="/assets/js/106.529bca07.js"><link rel="prefetch" href="/assets/js/107.c8671a0d.js"><link rel="prefetch" href="/assets/js/108.55c93c64.js"><link rel="prefetch" href="/assets/js/109.7d1efa54.js"><link rel="prefetch" href="/assets/js/11.2f89b5eb.js"><link rel="prefetch" href="/assets/js/110.0caecbf5.js"><link rel="prefetch" href="/assets/js/111.a2aeae49.js"><link rel="prefetch" href="/assets/js/112.eb7ceda5.js"><link rel="prefetch" href="/assets/js/113.f304408d.js"><link rel="prefetch" href="/assets/js/114.988c637f.js"><link rel="prefetch" href="/assets/js/115.bfdeed31.js"><link rel="prefetch" href="/assets/js/116.a47b8c53.js"><link rel="prefetch" href="/assets/js/117.2e1e8250.js"><link rel="prefetch" href="/assets/js/118.758ce408.js"><link rel="prefetch" href="/assets/js/119.73d9e688.js"><link rel="prefetch" href="/assets/js/12.53aaa509.js"><link rel="prefetch" href="/assets/js/120.202a8b2e.js"><link rel="prefetch" href="/assets/js/121.ca91d59a.js"><link rel="prefetch" href="/assets/js/122.8804c0dd.js"><link rel="prefetch" href="/assets/js/123.ceada225.js"><link rel="prefetch" href="/assets/js/124.4b2718b7.js"><link rel="prefetch" href="/assets/js/125.72134235.js"><link rel="prefetch" href="/assets/js/126.167b162c.js"><link rel="prefetch" href="/assets/js/127.f8139c17.js"><link rel="prefetch" href="/assets/js/128.da64a377.js"><link rel="prefetch" href="/assets/js/129.c07963b1.js"><link rel="prefetch" href="/assets/js/13.52940164.js"><link rel="prefetch" href="/assets/js/130.f66fc8bb.js"><link rel="prefetch" href="/assets/js/131.a913c7dd.js"><link rel="prefetch" href="/assets/js/132.ea648654.js"><link rel="prefetch" href="/assets/js/133.074ca70e.js"><link rel="prefetch" href="/assets/js/134.dc79ddd8.js"><link rel="prefetch" href="/assets/js/135.c4516208.js"><link rel="prefetch" href="/assets/js/136.2546baf7.js"><link rel="prefetch" href="/assets/js/137.56454fc6.js"><link rel="prefetch" href="/assets/js/138.bdb002bf.js"><link rel="prefetch" href="/assets/js/139.40a2f9b5.js"><link rel="prefetch" href="/assets/js/14.ade1e74d.js"><link rel="prefetch" href="/assets/js/140.06b20427.js"><link rel="prefetch" href="/assets/js/141.8dd992e3.js"><link rel="prefetch" href="/assets/js/142.d9305485.js"><link rel="prefetch" href="/assets/js/143.41bf907e.js"><link rel="prefetch" href="/assets/js/144.c138960c.js"><link rel="prefetch" href="/assets/js/145.fc5b38c8.js"><link rel="prefetch" href="/assets/js/146.c9166b70.js"><link rel="prefetch" href="/assets/js/147.c31d8a01.js"><link rel="prefetch" href="/assets/js/148.5c0534ca.js"><link rel="prefetch" href="/assets/js/149.d2355ea2.js"><link rel="prefetch" href="/assets/js/15.970a8ca5.js"><link rel="prefetch" href="/assets/js/150.c1644898.js"><link rel="prefetch" href="/assets/js/151.b6e4adf0.js"><link rel="prefetch" href="/assets/js/152.7a5071aa.js"><link rel="prefetch" href="/assets/js/153.31abbc68.js"><link rel="prefetch" href="/assets/js/154.9c6bb079.js"><link rel="prefetch" href="/assets/js/155.e5506a40.js"><link rel="prefetch" href="/assets/js/156.992dab50.js"><link rel="prefetch" href="/assets/js/157.12a6ee84.js"><link rel="prefetch" href="/assets/js/158.84dc1045.js"><link rel="prefetch" href="/assets/js/159.fd2022b1.js"><link rel="prefetch" href="/assets/js/16.ff971500.js"><link rel="prefetch" href="/assets/js/160.8d8889cd.js"><link rel="prefetch" href="/assets/js/161.31797def.js"><link rel="prefetch" href="/assets/js/162.bfae7a75.js"><link rel="prefetch" href="/assets/js/163.e5e8094d.js"><link rel="prefetch" href="/assets/js/164.870f212c.js"><link rel="prefetch" href="/assets/js/165.8da20a31.js"><link rel="prefetch" href="/assets/js/166.950a187d.js"><link rel="prefetch" href="/assets/js/167.fd042c52.js"><link rel="prefetch" href="/assets/js/168.7d9f058d.js"><link rel="prefetch" href="/assets/js/169.205df80e.js"><link rel="prefetch" href="/assets/js/17.4b045b26.js"><link rel="prefetch" href="/assets/js/170.270108a3.js"><link rel="prefetch" href="/assets/js/171.9f03d27d.js"><link rel="prefetch" href="/assets/js/172.1882bac7.js"><link rel="prefetch" href="/assets/js/173.fc1fe7d4.js"><link rel="prefetch" href="/assets/js/174.d77c927b.js"><link rel="prefetch" href="/assets/js/175.019b9e83.js"><link rel="prefetch" href="/assets/js/176.5ce31bd8.js"><link rel="prefetch" href="/assets/js/177.9a2006f2.js"><link rel="prefetch" href="/assets/js/178.88265ac1.js"><link rel="prefetch" href="/assets/js/179.3205ce07.js"><link rel="prefetch" href="/assets/js/18.1cdd0514.js"><link rel="prefetch" href="/assets/js/180.2ff51f44.js"><link rel="prefetch" href="/assets/js/181.f792ce97.js"><link rel="prefetch" href="/assets/js/182.103328e1.js"><link rel="prefetch" href="/assets/js/183.40fde303.js"><link rel="prefetch" href="/assets/js/184.1f36ac78.js"><link rel="prefetch" href="/assets/js/185.cf3b1c00.js"><link rel="prefetch" href="/assets/js/186.f7981399.js"><link rel="prefetch" href="/assets/js/187.20fe296d.js"><link rel="prefetch" href="/assets/js/188.7b004fea.js"><link rel="prefetch" href="/assets/js/189.599ca2d9.js"><link rel="prefetch" href="/assets/js/19.5740e4d6.js"><link rel="prefetch" href="/assets/js/190.14087c07.js"><link rel="prefetch" href="/assets/js/191.b0f73f6d.js"><link rel="prefetch" href="/assets/js/192.9d171669.js"><link rel="prefetch" href="/assets/js/193.00975585.js"><link rel="prefetch" href="/assets/js/194.2c7c43b4.js"><link rel="prefetch" href="/assets/js/195.ff126254.js"><link rel="prefetch" href="/assets/js/196.6546ae1c.js"><link rel="prefetch" href="/assets/js/197.eedb67bb.js"><link rel="prefetch" href="/assets/js/198.acdcc22c.js"><link rel="prefetch" href="/assets/js/199.7993a6b2.js"><link rel="prefetch" href="/assets/js/20.8885a4fa.js"><link rel="prefetch" href="/assets/js/200.52f08765.js"><link rel="prefetch" href="/assets/js/201.b85ab10b.js"><link rel="prefetch" href="/assets/js/202.ccec1c85.js"><link rel="prefetch" href="/assets/js/203.3f50a6ed.js"><link rel="prefetch" href="/assets/js/204.f28b803b.js"><link rel="prefetch" href="/assets/js/205.c51c53fd.js"><link rel="prefetch" href="/assets/js/206.ba0aa8f6.js"><link rel="prefetch" href="/assets/js/207.0dce311a.js"><link rel="prefetch" href="/assets/js/208.0ea629a6.js"><link rel="prefetch" href="/assets/js/209.f48c3e71.js"><link rel="prefetch" href="/assets/js/21.0bb62db4.js"><link rel="prefetch" href="/assets/js/210.689db8f2.js"><link rel="prefetch" href="/assets/js/211.72bc0f1f.js"><link rel="prefetch" href="/assets/js/212.456135bd.js"><link rel="prefetch" href="/assets/js/213.d0ea50fc.js"><link rel="prefetch" href="/assets/js/214.1400da91.js"><link rel="prefetch" href="/assets/js/215.aeef3e5d.js"><link rel="prefetch" href="/assets/js/216.a60215af.js"><link rel="prefetch" href="/assets/js/217.d6cd8b69.js"><link rel="prefetch" href="/assets/js/218.1bd500fc.js"><link rel="prefetch" href="/assets/js/219.20faf611.js"><link rel="prefetch" href="/assets/js/22.3e8347a6.js"><link rel="prefetch" href="/assets/js/220.6714179b.js"><link rel="prefetch" href="/assets/js/221.fb5b643d.js"><link rel="prefetch" href="/assets/js/222.d96272e5.js"><link rel="prefetch" href="/assets/js/223.4cb7dc3d.js"><link rel="prefetch" href="/assets/js/224.500d94cc.js"><link rel="prefetch" href="/assets/js/225.d006c34e.js"><link rel="prefetch" href="/assets/js/226.73612150.js"><link rel="prefetch" href="/assets/js/227.b02db9d1.js"><link rel="prefetch" href="/assets/js/228.aad43ff2.js"><link rel="prefetch" href="/assets/js/229.65340802.js"><link rel="prefetch" href="/assets/js/23.ceb5a5ff.js"><link rel="prefetch" href="/assets/js/230.97cab104.js"><link rel="prefetch" href="/assets/js/231.8415349a.js"><link rel="prefetch" href="/assets/js/232.db6d2697.js"><link rel="prefetch" href="/assets/js/233.723d05b1.js"><link rel="prefetch" href="/assets/js/234.26ed5e94.js"><link rel="prefetch" href="/assets/js/235.a586122b.js"><link rel="prefetch" href="/assets/js/236.f802bda8.js"><link rel="prefetch" href="/assets/js/237.cc8767ad.js"><link rel="prefetch" href="/assets/js/238.6485459e.js"><link rel="prefetch" href="/assets/js/239.9fbf3a55.js"><link rel="prefetch" href="/assets/js/24.07267ac6.js"><link rel="prefetch" href="/assets/js/240.1188f244.js"><link rel="prefetch" href="/assets/js/241.cbfb154d.js"><link rel="prefetch" href="/assets/js/242.352cea5a.js"><link rel="prefetch" href="/assets/js/243.07947e1c.js"><link rel="prefetch" href="/assets/js/244.f5b26fa9.js"><link rel="prefetch" href="/assets/js/245.c6030e32.js"><link rel="prefetch" href="/assets/js/246.d3fe99f7.js"><link rel="prefetch" href="/assets/js/247.185ae95d.js"><link rel="prefetch" href="/assets/js/248.a5f1548c.js"><link rel="prefetch" href="/assets/js/249.19691113.js"><link rel="prefetch" href="/assets/js/25.15e1f641.js"><link rel="prefetch" href="/assets/js/250.72fa1d33.js"><link rel="prefetch" href="/assets/js/251.bedd56f7.js"><link rel="prefetch" href="/assets/js/252.32bbcc8b.js"><link rel="prefetch" href="/assets/js/253.b59e5846.js"><link rel="prefetch" href="/assets/js/254.c0e37e1a.js"><link rel="prefetch" href="/assets/js/255.850da3cc.js"><link rel="prefetch" href="/assets/js/256.952d9817.js"><link rel="prefetch" href="/assets/js/257.88667bb8.js"><link rel="prefetch" href="/assets/js/258.c5873c28.js"><link rel="prefetch" href="/assets/js/259.6ae1dcbc.js"><link rel="prefetch" href="/assets/js/26.35b2bbdc.js"><link rel="prefetch" href="/assets/js/260.cb940cc3.js"><link rel="prefetch" href="/assets/js/261.0686c3e9.js"><link rel="prefetch" href="/assets/js/262.d0719839.js"><link rel="prefetch" href="/assets/js/263.ae83ebc1.js"><link rel="prefetch" href="/assets/js/264.209ad8a3.js"><link rel="prefetch" href="/assets/js/265.be8d1ee8.js"><link rel="prefetch" href="/assets/js/266.c51bceaa.js"><link rel="prefetch" href="/assets/js/267.fe8af48a.js"><link rel="prefetch" href="/assets/js/268.e18ed861.js"><link rel="prefetch" href="/assets/js/269.7126031e.js"><link rel="prefetch" href="/assets/js/27.270fcb06.js"><link rel="prefetch" href="/assets/js/270.89ead106.js"><link rel="prefetch" href="/assets/js/271.0643d07a.js"><link rel="prefetch" href="/assets/js/272.32a8e4b0.js"><link rel="prefetch" href="/assets/js/273.9881da47.js"><link rel="prefetch" href="/assets/js/274.2de022ea.js"><link rel="prefetch" href="/assets/js/275.d9a4fe99.js"><link rel="prefetch" href="/assets/js/276.d33de2e9.js"><link rel="prefetch" href="/assets/js/277.1ec367ab.js"><link rel="prefetch" href="/assets/js/278.66ab7c11.js"><link rel="prefetch" href="/assets/js/279.ff51cd15.js"><link rel="prefetch" href="/assets/js/28.ef3f6db2.js"><link rel="prefetch" href="/assets/js/280.ef45ed5f.js"><link rel="prefetch" href="/assets/js/281.87f26b81.js"><link rel="prefetch" href="/assets/js/282.c8ef594b.js"><link rel="prefetch" href="/assets/js/283.15643091.js"><link rel="prefetch" href="/assets/js/284.c4f25b2e.js"><link rel="prefetch" href="/assets/js/285.2d16e4b6.js"><link rel="prefetch" href="/assets/js/286.44eba266.js"><link rel="prefetch" href="/assets/js/287.7613e62f.js"><link rel="prefetch" href="/assets/js/288.b9546d55.js"><link rel="prefetch" href="/assets/js/289.125f85d8.js"><link rel="prefetch" href="/assets/js/29.177558be.js"><link rel="prefetch" href="/assets/js/290.db375797.js"><link rel="prefetch" href="/assets/js/291.90946626.js"><link rel="prefetch" href="/assets/js/292.a4524678.js"><link rel="prefetch" href="/assets/js/293.3ed9b083.js"><link rel="prefetch" href="/assets/js/294.d6c14116.js"><link rel="prefetch" href="/assets/js/295.2b485032.js"><link rel="prefetch" href="/assets/js/296.29d9aa0f.js"><link rel="prefetch" href="/assets/js/297.bfd72435.js"><link rel="prefetch" href="/assets/js/298.fc056989.js"><link rel="prefetch" href="/assets/js/299.0a3f258e.js"><link rel="prefetch" href="/assets/js/3.4dc033c7.js"><link rel="prefetch" href="/assets/js/30.248a229d.js"><link rel="prefetch" href="/assets/js/300.d064d776.js"><link rel="prefetch" href="/assets/js/301.d95b9fc0.js"><link rel="prefetch" href="/assets/js/302.1afa637a.js"><link rel="prefetch" href="/assets/js/303.231beaa8.js"><link rel="prefetch" href="/assets/js/304.05df35d9.js"><link rel="prefetch" href="/assets/js/305.f2d83cf9.js"><link rel="prefetch" href="/assets/js/306.d54f5e5e.js"><link rel="prefetch" href="/assets/js/307.d5df9000.js"><link rel="prefetch" href="/assets/js/309.d1f13319.js"><link rel="prefetch" href="/assets/js/31.32a62b91.js"><link rel="prefetch" href="/assets/js/310.30b84be3.js"><link rel="prefetch" href="/assets/js/311.d79e3145.js"><link rel="prefetch" href="/assets/js/312.58e24f19.js"><link rel="prefetch" href="/assets/js/313.9809a122.js"><link rel="prefetch" href="/assets/js/314.e92e41b1.js"><link rel="prefetch" href="/assets/js/315.8c2fc1d4.js"><link rel="prefetch" href="/assets/js/316.a0904343.js"><link rel="prefetch" href="/assets/js/317.18e42b54.js"><link rel="prefetch" href="/assets/js/318.6b051d27.js"><link rel="prefetch" href="/assets/js/319.513b0197.js"><link rel="prefetch" href="/assets/js/32.23b75afc.js"><link rel="prefetch" href="/assets/js/320.ae91bc36.js"><link rel="prefetch" href="/assets/js/321.a194efea.js"><link rel="prefetch" href="/assets/js/322.8273020e.js"><link rel="prefetch" href="/assets/js/323.d332e08f.js"><link rel="prefetch" href="/assets/js/324.ed867b64.js"><link rel="prefetch" href="/assets/js/325.c43ccf9a.js"><link rel="prefetch" href="/assets/js/326.9497d879.js"><link rel="prefetch" href="/assets/js/327.7f095e40.js"><link rel="prefetch" href="/assets/js/328.cb5c5847.js"><link rel="prefetch" href="/assets/js/329.d36b59f3.js"><link rel="prefetch" href="/assets/js/33.b258b779.js"><link rel="prefetch" href="/assets/js/330.b1a092b9.js"><link rel="prefetch" href="/assets/js/331.ff86566f.js"><link rel="prefetch" href="/assets/js/332.0daafa9f.js"><link rel="prefetch" href="/assets/js/333.b7e50524.js"><link rel="prefetch" href="/assets/js/334.7dcf9f0b.js"><link rel="prefetch" href="/assets/js/335.862c410a.js"><link rel="prefetch" href="/assets/js/336.c6384990.js"><link rel="prefetch" href="/assets/js/337.ab9d5e52.js"><link rel="prefetch" href="/assets/js/338.598ae59e.js"><link rel="prefetch" href="/assets/js/339.9b810ff8.js"><link rel="prefetch" href="/assets/js/34.3bd60f1f.js"><link rel="prefetch" href="/assets/js/340.5609a53c.js"><link rel="prefetch" href="/assets/js/341.969d335a.js"><link rel="prefetch" href="/assets/js/342.43f85dba.js"><link rel="prefetch" href="/assets/js/343.47280ef9.js"><link rel="prefetch" href="/assets/js/344.346ae5fc.js"><link rel="prefetch" href="/assets/js/345.32166361.js"><link rel="prefetch" href="/assets/js/346.86ff128b.js"><link rel="prefetch" href="/assets/js/347.3c5421fe.js"><link rel="prefetch" href="/assets/js/348.95910300.js"><link rel="prefetch" href="/assets/js/349.004158d8.js"><link rel="prefetch" href="/assets/js/35.18e8f66a.js"><link rel="prefetch" href="/assets/js/350.e10b195b.js"><link rel="prefetch" href="/assets/js/351.12f89875.js"><link rel="prefetch" href="/assets/js/352.83957394.js"><link rel="prefetch" href="/assets/js/353.475971b9.js"><link rel="prefetch" href="/assets/js/354.8af7b26b.js"><link rel="prefetch" href="/assets/js/355.85925e24.js"><link rel="prefetch" href="/assets/js/356.1d77cf9c.js"><link rel="prefetch" href="/assets/js/357.b467d481.js"><link rel="prefetch" href="/assets/js/358.ac96f32d.js"><link rel="prefetch" href="/assets/js/359.e048bd10.js"><link rel="prefetch" href="/assets/js/36.a7ae257c.js"><link rel="prefetch" href="/assets/js/360.e9b45545.js"><link rel="prefetch" href="/assets/js/361.ad1bb45b.js"><link rel="prefetch" href="/assets/js/362.4e24a30b.js"><link rel="prefetch" href="/assets/js/363.64f7dad5.js"><link rel="prefetch" href="/assets/js/364.d9e3ebc2.js"><link rel="prefetch" href="/assets/js/365.330e3086.js"><link rel="prefetch" href="/assets/js/366.a6c0afb3.js"><link rel="prefetch" href="/assets/js/367.ffcefa40.js"><link rel="prefetch" href="/assets/js/368.664c8e4d.js"><link rel="prefetch" href="/assets/js/369.67da2dd2.js"><link rel="prefetch" href="/assets/js/37.d709f9a9.js"><link rel="prefetch" href="/assets/js/370.b1791970.js"><link rel="prefetch" href="/assets/js/371.743a461a.js"><link rel="prefetch" href="/assets/js/372.7703ef1b.js"><link rel="prefetch" href="/assets/js/373.17de31f6.js"><link rel="prefetch" href="/assets/js/374.e508be9e.js"><link rel="prefetch" href="/assets/js/375.6e2e9fe3.js"><link rel="prefetch" href="/assets/js/376.8ca3511a.js"><link rel="prefetch" href="/assets/js/377.bfcee39c.js"><link rel="prefetch" href="/assets/js/378.21852b78.js"><link rel="prefetch" href="/assets/js/379.9649c307.js"><link rel="prefetch" href="/assets/js/38.68ca920e.js"><link rel="prefetch" href="/assets/js/380.dadb4418.js"><link rel="prefetch" href="/assets/js/381.a03c993d.js"><link rel="prefetch" href="/assets/js/382.bb7c22c1.js"><link rel="prefetch" href="/assets/js/383.bd68b2e5.js"><link rel="prefetch" href="/assets/js/384.f6dc7457.js"><link rel="prefetch" href="/assets/js/385.14287a91.js"><link rel="prefetch" href="/assets/js/386.a6284ac2.js"><link rel="prefetch" href="/assets/js/387.c51f147a.js"><link rel="prefetch" href="/assets/js/388.06d9651e.js"><link rel="prefetch" href="/assets/js/389.2d85d927.js"><link rel="prefetch" href="/assets/js/39.de850db9.js"><link rel="prefetch" href="/assets/js/390.2397b3e0.js"><link rel="prefetch" href="/assets/js/391.8413aaaf.js"><link rel="prefetch" href="/assets/js/392.00eecaa4.js"><link rel="prefetch" href="/assets/js/393.351dd3fd.js"><link rel="prefetch" href="/assets/js/394.d2cc4a70.js"><link rel="prefetch" href="/assets/js/395.abee64bf.js"><link rel="prefetch" href="/assets/js/396.bc265e6a.js"><link rel="prefetch" href="/assets/js/397.e4a96944.js"><link rel="prefetch" href="/assets/js/398.f0d26b29.js"><link rel="prefetch" href="/assets/js/399.e77c3ddc.js"><link rel="prefetch" href="/assets/js/4.2f502b73.js"><link rel="prefetch" href="/assets/js/40.91635261.js"><link rel="prefetch" href="/assets/js/400.c7eac401.js"><link rel="prefetch" href="/assets/js/401.06092d16.js"><link rel="prefetch" href="/assets/js/402.4e08e496.js"><link rel="prefetch" href="/assets/js/403.deba4c77.js"><link rel="prefetch" href="/assets/js/404.9100e4df.js"><link rel="prefetch" href="/assets/js/405.e9f451e2.js"><link rel="prefetch" href="/assets/js/406.a0da4aa4.js"><link rel="prefetch" href="/assets/js/407.58b2b123.js"><link rel="prefetch" href="/assets/js/408.eb2cde2d.js"><link rel="prefetch" href="/assets/js/409.9041f749.js"><link rel="prefetch" href="/assets/js/41.169a3cfc.js"><link rel="prefetch" href="/assets/js/410.c12f3710.js"><link rel="prefetch" href="/assets/js/411.452cda45.js"><link rel="prefetch" href="/assets/js/412.8691317a.js"><link rel="prefetch" href="/assets/js/413.25a68f21.js"><link rel="prefetch" href="/assets/js/414.7a9699d8.js"><link rel="prefetch" href="/assets/js/415.6e8cdaff.js"><link rel="prefetch" href="/assets/js/416.e8a86529.js"><link rel="prefetch" href="/assets/js/417.28330bde.js"><link rel="prefetch" href="/assets/js/418.2fed8e17.js"><link rel="prefetch" href="/assets/js/419.773032f4.js"><link rel="prefetch" href="/assets/js/42.e17cd061.js"><link rel="prefetch" href="/assets/js/420.56681228.js"><link rel="prefetch" href="/assets/js/421.0d170e13.js"><link rel="prefetch" href="/assets/js/422.fc8c2a11.js"><link rel="prefetch" href="/assets/js/423.e34ea6a6.js"><link rel="prefetch" href="/assets/js/424.20fe8748.js"><link rel="prefetch" href="/assets/js/425.f001b7cd.js"><link rel="prefetch" href="/assets/js/426.a91230ef.js"><link rel="prefetch" href="/assets/js/427.c6c9fe8d.js"><link rel="prefetch" href="/assets/js/428.9d4f5e41.js"><link rel="prefetch" href="/assets/js/429.c81cfd3f.js"><link rel="prefetch" href="/assets/js/43.f88aa667.js"><link rel="prefetch" href="/assets/js/430.eb61372f.js"><link rel="prefetch" href="/assets/js/431.4a25365a.js"><link rel="prefetch" href="/assets/js/432.42fc1bbe.js"><link rel="prefetch" href="/assets/js/433.8e9ac9f0.js"><link rel="prefetch" href="/assets/js/434.fdd0b160.js"><link rel="prefetch" href="/assets/js/435.d6cbac31.js"><link rel="prefetch" href="/assets/js/436.17750ba2.js"><link rel="prefetch" href="/assets/js/437.a1468099.js"><link rel="prefetch" href="/assets/js/438.ac6a45c2.js"><link rel="prefetch" href="/assets/js/439.242ae27a.js"><link rel="prefetch" href="/assets/js/44.3f36e228.js"><link rel="prefetch" href="/assets/js/440.b80b520c.js"><link rel="prefetch" href="/assets/js/441.e51a4bbb.js"><link rel="prefetch" href="/assets/js/442.ab0b3eda.js"><link rel="prefetch" href="/assets/js/443.47e44250.js"><link rel="prefetch" href="/assets/js/444.54c3b425.js"><link rel="prefetch" href="/assets/js/445.e006c12e.js"><link rel="prefetch" href="/assets/js/446.f2b79730.js"><link rel="prefetch" href="/assets/js/447.2509a397.js"><link rel="prefetch" href="/assets/js/448.b7d69dfc.js"><link rel="prefetch" href="/assets/js/449.8a575d9b.js"><link rel="prefetch" href="/assets/js/45.be1455b1.js"><link rel="prefetch" href="/assets/js/450.ad421aeb.js"><link rel="prefetch" href="/assets/js/451.f09912ae.js"><link rel="prefetch" href="/assets/js/452.f528c4ce.js"><link rel="prefetch" href="/assets/js/453.fc4dc0f9.js"><link rel="prefetch" href="/assets/js/454.733c315c.js"><link rel="prefetch" href="/assets/js/455.44fe35b1.js"><link rel="prefetch" href="/assets/js/456.7f650035.js"><link rel="prefetch" href="/assets/js/457.77ebc183.js"><link rel="prefetch" href="/assets/js/458.133078f4.js"><link rel="prefetch" href="/assets/js/459.33728b5e.js"><link rel="prefetch" href="/assets/js/46.5ad74cb5.js"><link rel="prefetch" href="/assets/js/460.6946f564.js"><link rel="prefetch" href="/assets/js/461.6f906c5c.js"><link rel="prefetch" href="/assets/js/462.26eca27e.js"><link rel="prefetch" href="/assets/js/463.e02e5f65.js"><link rel="prefetch" href="/assets/js/464.0df25c63.js"><link rel="prefetch" href="/assets/js/465.80cd249e.js"><link rel="prefetch" href="/assets/js/466.a0921e86.js"><link rel="prefetch" href="/assets/js/467.1bec2b47.js"><link rel="prefetch" href="/assets/js/468.b6fa37c1.js"><link rel="prefetch" href="/assets/js/469.a1d2487e.js"><link rel="prefetch" href="/assets/js/47.03df5d0a.js"><link rel="prefetch" href="/assets/js/470.36a4b9c8.js"><link rel="prefetch" href="/assets/js/471.28895273.js"><link rel="prefetch" href="/assets/js/472.b9fe392f.js"><link rel="prefetch" href="/assets/js/473.a2835d9c.js"><link rel="prefetch" href="/assets/js/474.cd57b37d.js"><link rel="prefetch" href="/assets/js/475.8d5a9792.js"><link rel="prefetch" href="/assets/js/476.f7f3781c.js"><link rel="prefetch" href="/assets/js/477.9b710b04.js"><link rel="prefetch" href="/assets/js/478.46d66687.js"><link rel="prefetch" href="/assets/js/479.e7444705.js"><link rel="prefetch" href="/assets/js/48.48f286ba.js"><link rel="prefetch" href="/assets/js/480.da2b750a.js"><link rel="prefetch" href="/assets/js/481.838a8e04.js"><link rel="prefetch" href="/assets/js/482.02bf8041.js"><link rel="prefetch" href="/assets/js/483.bb29ef2f.js"><link rel="prefetch" href="/assets/js/484.aebb68bd.js"><link rel="prefetch" href="/assets/js/485.a66ab41b.js"><link rel="prefetch" href="/assets/js/486.8df516fb.js"><link rel="prefetch" href="/assets/js/487.86d28130.js"><link rel="prefetch" href="/assets/js/488.0863da70.js"><link rel="prefetch" href="/assets/js/489.5d4d9e88.js"><link rel="prefetch" href="/assets/js/49.1ca52d11.js"><link rel="prefetch" href="/assets/js/490.3fd65d85.js"><link rel="prefetch" href="/assets/js/491.ae3a2f87.js"><link rel="prefetch" href="/assets/js/492.6f54679b.js"><link rel="prefetch" href="/assets/js/493.a594b1f4.js"><link rel="prefetch" href="/assets/js/494.4f03fae1.js"><link rel="prefetch" href="/assets/js/495.ae50b66b.js"><link rel="prefetch" href="/assets/js/496.bc92d835.js"><link rel="prefetch" href="/assets/js/497.eac65251.js"><link rel="prefetch" href="/assets/js/498.1d726726.js"><link rel="prefetch" href="/assets/js/499.01e4f7d1.js"><link rel="prefetch" href="/assets/js/5.7b1f056c.js"><link rel="prefetch" href="/assets/js/50.73732fe2.js"><link rel="prefetch" href="/assets/js/500.062ade4e.js"><link rel="prefetch" href="/assets/js/501.e6a711dc.js"><link rel="prefetch" href="/assets/js/502.c79e28e2.js"><link rel="prefetch" href="/assets/js/503.bf97bce9.js"><link rel="prefetch" href="/assets/js/504.b2784ef0.js"><link rel="prefetch" href="/assets/js/505.0767ba54.js"><link rel="prefetch" href="/assets/js/506.8ae14637.js"><link rel="prefetch" href="/assets/js/507.003e2349.js"><link rel="prefetch" href="/assets/js/508.ecb5e6bd.js"><link rel="prefetch" href="/assets/js/509.b644f44a.js"><link rel="prefetch" href="/assets/js/51.bed7cf61.js"><link rel="prefetch" href="/assets/js/510.b660946f.js"><link rel="prefetch" href="/assets/js/511.cb186c8f.js"><link rel="prefetch" href="/assets/js/512.d176170f.js"><link rel="prefetch" href="/assets/js/513.18a1afa5.js"><link rel="prefetch" href="/assets/js/514.4a33e931.js"><link rel="prefetch" href="/assets/js/515.8496bd4d.js"><link rel="prefetch" href="/assets/js/516.529b9476.js"><link rel="prefetch" href="/assets/js/517.289738f1.js"><link rel="prefetch" href="/assets/js/518.eda39556.js"><link rel="prefetch" href="/assets/js/519.85b42de5.js"><link rel="prefetch" href="/assets/js/52.22a7da62.js"><link rel="prefetch" href="/assets/js/520.8b531775.js"><link rel="prefetch" href="/assets/js/521.8e4b66fb.js"><link rel="prefetch" href="/assets/js/522.050bfc55.js"><link rel="prefetch" href="/assets/js/523.e973f1e0.js"><link rel="prefetch" href="/assets/js/524.fd160738.js"><link rel="prefetch" href="/assets/js/525.5a4bc307.js"><link rel="prefetch" href="/assets/js/526.361bc4fa.js"><link rel="prefetch" href="/assets/js/527.06ee9d73.js"><link rel="prefetch" href="/assets/js/528.22d9b118.js"><link rel="prefetch" href="/assets/js/529.b7592c16.js"><link rel="prefetch" href="/assets/js/53.767f3bbf.js"><link rel="prefetch" href="/assets/js/530.ad96d564.js"><link rel="prefetch" href="/assets/js/531.61905243.js"><link rel="prefetch" href="/assets/js/532.11aebf61.js"><link rel="prefetch" href="/assets/js/533.0cddb226.js"><link rel="prefetch" href="/assets/js/534.d1c9cc36.js"><link rel="prefetch" href="/assets/js/54.d1f9eec8.js"><link rel="prefetch" href="/assets/js/55.aa90e812.js"><link rel="prefetch" href="/assets/js/56.4d7f81f2.js"><link rel="prefetch" href="/assets/js/57.3c540e8d.js"><link rel="prefetch" href="/assets/js/58.fc1c23f2.js"><link rel="prefetch" href="/assets/js/59.c7a7a4c0.js"><link rel="prefetch" href="/assets/js/6.056886f1.js"><link rel="prefetch" href="/assets/js/60.40e590ae.js"><link rel="prefetch" href="/assets/js/61.e400b323.js"><link rel="prefetch" href="/assets/js/62.bbb30ef1.js"><link rel="prefetch" href="/assets/js/63.c31cd2bb.js"><link rel="prefetch" href="/assets/js/64.62321188.js"><link rel="prefetch" href="/assets/js/65.44adc2b3.js"><link rel="prefetch" href="/assets/js/66.b5740d4f.js"><link rel="prefetch" href="/assets/js/67.76c3624c.js"><link rel="prefetch" href="/assets/js/68.6dd982d4.js"><link rel="prefetch" href="/assets/js/69.eb1390ec.js"><link rel="prefetch" href="/assets/js/7.a96cecf9.js"><link rel="prefetch" href="/assets/js/70.8c882bdd.js"><link rel="prefetch" href="/assets/js/71.001c968a.js"><link rel="prefetch" href="/assets/js/72.ae4ca075.js"><link rel="prefetch" href="/assets/js/73.d6ae6a27.js"><link rel="prefetch" href="/assets/js/74.fba60e37.js"><link rel="prefetch" href="/assets/js/75.0b1bf7bf.js"><link rel="prefetch" href="/assets/js/76.ee19d90e.js"><link rel="prefetch" href="/assets/js/77.fe8ac5f0.js"><link rel="prefetch" href="/assets/js/78.ae09432e.js"><link rel="prefetch" href="/assets/js/79.c1b10e2d.js"><link rel="prefetch" href="/assets/js/80.ae809538.js"><link rel="prefetch" href="/assets/js/81.ca11b4c7.js"><link rel="prefetch" href="/assets/js/82.308b98e4.js"><link rel="prefetch" href="/assets/js/83.355d9dde.js"><link rel="prefetch" href="/assets/js/84.a2b61d48.js"><link rel="prefetch" href="/assets/js/85.cf992fda.js"><link rel="prefetch" href="/assets/js/86.f547c7ea.js"><link rel="prefetch" href="/assets/js/87.2b02746a.js"><link rel="prefetch" href="/assets/js/88.e939aad5.js"><link rel="prefetch" href="/assets/js/89.b000c42a.js"><link rel="prefetch" href="/assets/js/90.dadef001.js"><link rel="prefetch" href="/assets/js/91.c0fe2e32.js"><link rel="prefetch" href="/assets/js/92.e09650b9.js"><link rel="prefetch" href="/assets/js/93.427c7280.js"><link rel="prefetch" href="/assets/js/94.90fc5f58.js"><link rel="prefetch" href="/assets/js/95.13d42b3a.js"><link rel="prefetch" href="/assets/js/96.d0a2ea8c.js"><link rel="prefetch" href="/assets/js/97.cc9a0eda.js"><link rel="prefetch" href="/assets/js/98.3c9f1b7e.js"><link rel="prefetch" href="/assets/js/99.0420dcbc.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.33b2b47d.js">
    <link rel="stylesheet" href="/assets/css/0.styles.40c15e22.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="鱼皮的编程宝典" class="logo"> <span class="site-name can-hide">鱼皮的编程宝典</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/学习路线/" class="nav-link">
  学习路线
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="自学之路" class="dropdown-title"><span class="title">自学之路</span> <span class="arrow down"></span></button> <button type="button" aria-label="自学之路" class="mobile-dropdown-title"><span class="title">自学之路</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/自学之路/#大学经历" class="nav-link">
  大学经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#求职经历" class="nav-link">
  求职经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#职场工作" class="nav-link">
  职场工作
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#创作经历" class="nav-link">
  创作经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#创业经历" class="nav-link">
  创业经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#生活日常" class="nav-link">
  生活日常
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="编程分享" class="dropdown-title"><span class="title">编程分享</span> <span class="arrow down"></span></button> <button type="button" aria-label="编程分享" class="mobile-dropdown-title"><span class="title">编程分享</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/编程分享/#入门必看-学习路线" class="nav-link">
  入门必看-学习路线
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#学习指南" class="nav-link">
  学习指南
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#开发经验" class="nav-link">
  开发经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#求职经验" class="nav-link">
  求职经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#职场经验" class="nav-link">
  职场经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#技术分享" class="nav-link">
  技术分享
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#实战教程" class="nav-link">
  实战教程
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#其他" class="nav-link">
  其他
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#📚-项目教程" class="nav-link">
  项目教程
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#个人作品" class="nav-link">
  个人作品
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#🎁-编程资源" class="nav-link">
  编程资源
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#🌐-科技科普" class="nav-link">
  科技科普
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="项目实战" class="dropdown-title"><span class="title">项目实战</span> <span class="arrow down"></span></button> <button type="button" aria-label="项目实战" class="mobile-dropdown-title"><span class="title">项目实战</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/项目实战/OJ 判题系统.html" class="nav-link">
  OJ 判题系统
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/智能 BI 平台.html" class="nav-link">
  智能 BI 平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/聚合搜索平台.html" class="nav-link">
  聚合搜索平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/API 开放平台.html" class="nav-link">
  API 开放平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/伙伴匹配系统.html" class="nav-link">
  伙伴匹配系统
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/用户中心项目.html" class="nav-link">
  用户中心项目
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/Java 后端万用项目模板.html" class="nav-link">
  Java 后端万用项目模板
</a></li></ul></div></div><div class="nav-item"><a href="/知识碎片/" class="nav-link">
  知识碎片
</a></div><div class="nav-item"><a href="/编程导航/" class="nav-link">
  🔥 编程导航
</a></div><div class="nav-item"><a href="/产品服务/" class="nav-link">
  产品服务
</a></div><div class="nav-item"><a href="/作者/" class="nav-link">
  作者
</a></div> <a href="https://github.com/liyupi/codefather" target="_blank" rel="noopener noreferrer" class="repo-link">
    GitHub
    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/学习路线/" class="nav-link">
  学习路线
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="自学之路" class="dropdown-title"><span class="title">自学之路</span> <span class="arrow down"></span></button> <button type="button" aria-label="自学之路" class="mobile-dropdown-title"><span class="title">自学之路</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/自学之路/#大学经历" class="nav-link">
  大学经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#求职经历" class="nav-link">
  求职经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#职场工作" class="nav-link">
  职场工作
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#创作经历" class="nav-link">
  创作经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#创业经历" class="nav-link">
  创业经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#生活日常" class="nav-link">
  生活日常
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="编程分享" class="dropdown-title"><span class="title">编程分享</span> <span class="arrow down"></span></button> <button type="button" aria-label="编程分享" class="mobile-dropdown-title"><span class="title">编程分享</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/编程分享/#入门必看-学习路线" class="nav-link">
  入门必看-学习路线
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#学习指南" class="nav-link">
  学习指南
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#开发经验" class="nav-link">
  开发经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#求职经验" class="nav-link">
  求职经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#职场经验" class="nav-link">
  职场经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#技术分享" class="nav-link">
  技术分享
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#实战教程" class="nav-link">
  实战教程
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#其他" class="nav-link">
  其他
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#📚-项目教程" class="nav-link">
  项目教程
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#个人作品" class="nav-link">
  个人作品
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#🎁-编程资源" class="nav-link">
  编程资源
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#🌐-科技科普" class="nav-link">
  科技科普
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="项目实战" class="dropdown-title"><span class="title">项目实战</span> <span class="arrow down"></span></button> <button type="button" aria-label="项目实战" class="mobile-dropdown-title"><span class="title">项目实战</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/项目实战/OJ 判题系统.html" class="nav-link">
  OJ 判题系统
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/智能 BI 平台.html" class="nav-link">
  智能 BI 平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/聚合搜索平台.html" class="nav-link">
  聚合搜索平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/API 开放平台.html" class="nav-link">
  API 开放平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/伙伴匹配系统.html" class="nav-link">
  伙伴匹配系统
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/用户中心项目.html" class="nav-link">
  用户中心项目
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/Java 后端万用项目模板.html" class="nav-link">
  Java 后端万用项目模板
</a></li></ul></div></div><div class="nav-item"><a href="/知识碎片/" class="nav-link">
  知识碎片
</a></div><div class="nav-item"><a href="/编程导航/" class="nav-link">
  🔥 编程导航
</a></div><div class="nav-item"><a href="/产品服务/" class="nav-link">
  产品服务
</a></div><div class="nav-item"><a href="/作者/" class="nav-link">
  作者
</a></div> <a href="https://github.com/liyupi/codefather" target="_blank" rel="noopener noreferrer" class="repo-link">
    GitHub
    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav>  <ul class="sidebar-links"><li><a href="/%E7%BC%96%E7%A8%8B%E5%88%86%E4%BA%AB/" class="sidebar-link">入门必看 - 学习路线</a></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>入门必看-学习路线</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>学习指南</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发经验</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>求职经验</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>职场经验</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>技术分享</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>实战教程</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>项目教程</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>编程资源</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>科技科普</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>其他</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="content"><div style="width:100%"><div class="theme-default-content custom-content content__default"><h1 id="从家里到阿里-学弟超神的一年"><a href="#从家里到阿里-学弟超神的一年" class="header-anchor">#</a> 从家里到阿里，学弟超神的一年</h1> <blockquote><p>本文作者：<a href="https://yuyuanweb.feishu.cn/wiki/Abldw5WkjidySxkKxU2cQdAtnah" target="_blank" rel="noopener noreferrer">程序员鱼皮<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p>本站地址：<a href="https://codefather.cn" target="_blank" rel="noopener noreferrer">https://codefather.cn<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p></blockquote> <blockquote><p>一年，从懵懂小白到 BAT 大佬，他都经历了什么？</p></blockquote> <p>大家好，我是鱼皮，今天给大家分享一位学弟小六的 <strong>超完整</strong> 学习和求职经验，不需要我太多的介绍，他的故事和干货都在文章里了，希望对大家有帮助。</p> <blockquote><p>已得到原作者授权</p> <p>作者：牛客 六分钟热度</p></blockquote> <p>写在前面：自我介绍一下，21 届 211 科班菜鸡，在校时学业荒废，技术基础薄弱，成绩一般，保研无望，遂准备工作。</p> <p>求职战果：阿里、百度、滴滴、OPPO、招银等，BAT TMD 拿到了一半吧。</p> <p>本文力求在回忆总结、播撒鸡汤的同时多上点对读者有益的干货，对故事没兴趣的同学可以直接翻到本文后半部分~</p> <blockquote><p>鱼皮提供了本文的思维导图，可根据需要跳转阅读。</p></blockquote> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921439.png" loading="lazy" class="lazy"></p> <blockquote><p>思维导图</p></blockquote> <h2 id="求职故事"><a href="#求职故事" class="header-anchor">#</a> 求职故事</h2> <h3 id="艰难起步"><a href="#艰难起步" class="header-anchor">#</a> 艰难起步</h3> <p>🕒 2020 年 4 月 ~ 2020 年 8 月</p> <p>人没办法预知未来。</p> <p>正如 2020 年 4 月 21 日的那个深夜，当我为字节跳动一周后的面试激动地彻夜难眠时，不会想到迎接我的将是毫无悬念的失败。</p> <p>这一周里，我拼命背基础、写 LeetCode 题目，天亮就起，凌晨才睡，吃饭都在刷牛客找面经。只可惜，几年间落下的知识没办法用一朝来弥补，<strong>没有系统搭建的计算机知识体系，只靠着背几道面试题是经不起面试官的细问的</strong>，二面面试官问得我哑口无言的几个问题我至今都还记得。当时字节的流程经常是一下午连着三面，每次间隔十分钟，若是能过，三面结束就有结果，否则就此止步。二面结束后，我出门狂奔了几公里，心情沮丧，但隐约又觉得自己摸到了那扇通往大厂的大门。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921429.png" loading="lazy" class="lazy"></p> <p>五月份，学校开学了，我陆续又接到了几家公司的面试邀约，印象尤为深刻的是快手的面试。面试官戴着口罩，眼神凌厉，问得不仅有常规的八股，更涉及到计算机组成原理的一些专业知识，如磁盘 IO、内存读取之类的，基础不扎实的我只好支支吾吾东拉西扯，最不应该的是连手写单例模式也没有做到 bug free，一面之后再无下文。</p> <p>期间也面了好未来之类的中厂，面试官问我是否会 Springboot、Redis，在得到否定的回答后他们微微摇头。</p> <p>小厂的机会我也没有拒绝，可惜统统以失败告终。</p> <p>好在最终还是拿到了美的集团的实习 offer，这也是我整个实习春招期间拿到的唯一 offer。它的面试真的很简单，只有一面，时长 20 分钟，简单介绍了一下项目，问了一下快速排序，就结束了。当天下午 hr 就打来电话告知通过，感谢美的的认可，这对当时的我来说的确是一个不小的鼓励。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921436.png" loading="lazy" class="lazy"></p> <p>以现在的眼光审视当时的自己，那时的知识储备实在是匮乏得可怜，简历上除了罗列了一些知识点外，只有一个大二参加比赛的客户端项目，我却拿着它面试后台开发的岗位，面试官拿着简历简直 “无从下手”，失败也就不足为奇。</p> <p>意识到这一点后，我开始学习 Java 开发的相关框架，比如 SSM、SpringBoot 等。一边着手准备项目，同时继续坚持刷 LeetCode。这段时间里我找了个 Github 上的博客项目，把它的结构大概了解了一下后，就放上简历作为自己的项目。框架方面，看了 B 站上狂神说的视频，收获不能说很大，但对于 Spring 至少有了基本的认识，配合知乎、牛客上的相关面经，足以应付一些简单的问题了。</p> <p>转眼时间已经来到了七月底，距我开始准备求职已过三个月，我又面试了涂鸦智能、奇安信等公司，依然没有通过。这时的我，开始面临一个选择，是否要去美的暑期实习呢？</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921431.png" loading="lazy" class="lazy"></p> <p>再三权衡后，我登上了去佛山的 ✈️（美的总部位于佛山顺德）。</p> <h4 id="美的实习经历"><a href="#美的实习经历" class="header-anchor">#</a> 美的实习经历</h4> <p>在美的的导师是个操着浓重湖南口音普通话的中年人，沟通起来有点吃力，人挺好的（有饭局还带我蹭），但也许是因为工作繁忙，没时间给我太大帮助。另一个同事 J 哥教了我挺多，帮我拷代码装环境，还让我不要总唉声叹气哈哈，还教我买块固态备份文件后自己重装一下系统，虽然总是 diss 我的电脑文件夹凌乱。</p> <p>至今还记得有个周五下午，J 哥给我讲了一两个小时的学习路线规划，告诉了我 <strong>极客时间</strong> 这个网站，给我举例自己是怎么运用上面的课程解决工作上的问题的，虽然后期由于时间紧张他也没多少时间搭理我了，还是很感谢他的帮助。另外需要重点吐槽的是美的给实习生发的电脑是我近年来见过的最辣鸡的电脑，六七年前的 thinkpad，卡得你一愣一愣的，办公还必须得用它。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921432.png" loading="lazy" class="lazy"></p> <p>在美的我只待了一个月的时间，说来惭愧，这段时间代码几乎是一行都没有写，直到入职两周的时候代码的环境还有问题。归结原因，一方面是由于美的美云智数的业务模式所致，它是类似项目外包的经营模式，也可以叫 SaaS，售卖企业信息化软件服务。项目当时正处于开发得七七八八的验收阶段，所有人都很忙碌，没人期待实习生有什么产出，自己太菜导致项目的 Bug 也无力解决，也没人给我系统讲解项目的结构。所以我常常是处于无所事事的状态，上班就坐在工位上刷面经、整理笔记，六点到就跑路回到公寓接着做题（美的提供免费单人宿舍，这点很不错）。总得来说，这是一段挺愉快的经历，遗憾的是没有时间好好体验大顺德的美食哈哈。</p> <p>但求职的压力始终没有消散，不断面试不断失败，甚至电脑还进水了...... 那几天心态崩溃，我把自己的负面心情也记录在了牛客上，也有了很多牛友鼓励，甚至有人表示愿意先借我一台电脑，感动。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921444.png" loading="lazy" class="lazy"></p> <p>好在这段时间我也有所收获，<strong>花了一周时间搞了个RPC项目</strong> ，靠着这个项目，我面上了 <strong>滴滴</strong> 的测开实习岗位。这是我此生离大厂最近的一次，我必须再次做出自己的选择：<strong>去，还是不去？</strong></p> <h3 id="渐入佳境"><a href="#渐入佳境" class="header-anchor">#</a> 渐入佳境</h3> <p>🕒 2020 年 9 月 ~ 2021 年 3 月</p> <p>最终，我做出了当初和去美的一样的选择，从广东一路向北，来到北京。</p> <p>滴滴的工作氛围就相当 nice，团队年轻化，95、96 的年轻人居多，我在测试组，很多女生，工位左右都是姐姐。左手边坐着把我招进来的姐姐，生活方面有问题都问她，右手边年长些的是我的 mentor，负责在工作方面引导我。但时间长了就感觉到，自己对测试 / 测开的工作并不喜欢，对于需求的了解不够清晰，经常有问题都得找开发，编写测试 case 的过程也让我觉得头疼。后来就有了 <strong>转岗</strong> 的念头，可能真的是被幸运女神眷顾了吧，我成功调整到了开发小组。</p> <blockquote><p>鱼皮：一些公司是提供了转岗机制的，大厂转岗机会更多一些。如果大家拿到了好公司的 offer，却不是心仪的岗位，没其他更好选择的话，也可以先入职，再努力转岗。像这位同学一样主动提出，抓住机会。</p></blockquote> <p>新 mentor 是个工作激情十足的人，他做我  mentor 的日子里也是我实习收获最大的一段时间，虽然偶尔有点严厉，但真的是手把手在教我，让我从什么都不懂的纯小白成长为了能够胜任简单开发工作的菜鸟级开发选手。这段时间里虽然辛苦，但却足够充实。还要感谢我的Leader以及其他组员，对我足够包容，给了我很多试错的机会。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921542.png" loading="lazy" class="lazy"></p> <h3 id="再战春招"><a href="#再战春招" class="header-anchor">#</a> 再战春招</h3> <p>🕒 2020 年 3 月 ~ 2021 年 5 月</p> <p>等到我离职回校时，时间来到了三月底。我又有些不安分了，想着抓住毕业前的机会，利用实习半年的经历再试试春招，看看自己的上限在哪儿。最终把很多秋招时不敢投递的国内顶级 top 厂都面了一遍，也就不再有遗憾了。这几家公司的面试经历我也罗列一下。</p> <ul><li>面试百度：纯属偶然，是一位百度的经理在脉脉上和我打招呼，晚上十一点约的第二天早上现场面试，感觉难度适中，拿到了 offer。</li> <li>字节：投递的是抖音直播，一面面试官问得很有水准，很多没答上来，二面面试官的问题简单，但细节扣得较深，遗憾止步。</li> <li>快手：不知为何，多次投递简历筛选都不通过，也许是去年面试评价太差了。</li> <li>腾讯：被捞了一次，还没面的时候发现自己就灰了，草草二十分钟了事再无后续，估计是 kpi。</li> <li>阿里：最终拿到 offer。</li></ul> <p>分享一个投递心得：我拿到 offer 的几个大厂都不是在官网直接投递的，滴滴和阿里都是在 Boss 上的内推人帮我 <strong>组内直推走流程</strong>，能够实时跟踪反馈结果！百度也是直属 Leader 在脉脉上联系的，供朋友们参考下。</p> <blockquote><p>鱼皮：如今，求职内推（内部员工推荐）已经非常普遍了，大家在找内推的时候，如果有意向部门或小组，最好直接找该组内的员工，机会更大一些。小心猎头！小心猎头！小心猎头！</p></blockquote> <p><strong>分享下求职路上让我印象最深刻的几个瞬间：</strong></p> <ol><li>第一天到佛山的时候，去得太早物业还没开门，太阳太晒，跑到小区旁边的 <strong>网吧</strong> 开了台机子刷 LeetCode！</li> <li>在美的面试顺丰、网易等，怕被同事发现，跑到楼梯口、楼下的草坪旁坐着面试。</li> <li>第一天到北京看房时约了 OPPO 的面试，看到一半跑去面试。</li></ol> <blockquote><p>鱼皮：没想到真的有程序员在网吧刷 LeetCode！这里我真的是感同身受，自己当时也是为了面试，跑到公司楼下，到处找地方，甚至有一次是在肯德基，别人吃鸡翅，而我在机试。。。</p></blockquote> <p>现在回想起来，倒也不能说是辛苦，做一件事情是否困难很大程度取决于你对成功的渴求有多强烈，走到今天这步，应该算是六分努力四分运气吧，有了不错的起点，未来的路还漫长。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921388.png" loading="lazy" class="lazy"></p> <p>这一年从南昌到佛山再到北京，经历了美的和滴滴，接下来的几年可能要在杭州度过了，期待。</p> <p>故事讲完了，上干货！</p> <h2 id="干货分享"><a href="#干货分享" class="header-anchor">#</a> 干货分享</h2> <h3 id="资源"><a href="#资源" class="header-anchor">#</a> 资源</h3> <h4 id="求职必备-app-小程序-网站"><a href="#求职必备-app-小程序-网站" class="header-anchor">#</a> 求职必备 App / 小程序 / 网站</h4> <p>以下资源全都是我自己用过的，强力推荐！</p> <ul><li>牛客网必须排第一，收集信息，查找面经必备，也能在上面报团取暖，没事吹水缓解压力哈哈。</li> <li>Boss 直聘，很多是直接为自己团队招人的，一般更缺人，比起官网投递成功率 upup、其他的智联、拉钩、实习僧之类个人感觉用处不大，基本没回音。</li> <li>脉脉，搜集公司、部门信息首选，也能在上面找到公司 hr 帮忙内推，闲来无事吃吃瓜也是极好的。</li> <li>小程序 offershow，应届薪资哪家强，中国山东…… 啊呸，还不快查 offershow！</li> <li>网站 Leetcode、Codetop，面试字节，算法方面有它就够了。</li> <li>简历推荐网站 <strong>超级简历</strong> ，模板美观大方，还免费！</li> <li>技术学习网站推荐两个：掘金，上面有很多小册子，其实就是电子书，质量高的不少；极客时间，很多课程，比较系统，就是有点偏贵，不过为了进大厂这点投资还是划算的对不对~ 这两个网站的风格很清爽舒适，让我很是喜欢，学习也要颜控对不对~</li> <li>B站，课程很多，但是我没有耐心看完那些动辄几十小时的课程……</li></ul> <blockquote><p>鱼皮：补充一个，编程导航（www.code-nav.cn），可以在上面找到很多优质编程学习资源~</p></blockquote> <h4 id="学习书籍"><a href="#学习书籍" class="header-anchor">#</a> 学习书籍</h4> <p>其实看书这玩意大家都知道，买书如山倒，看书如抽丝，我自己本身只爱看小说 / 名人传记之类的杂书，对于专业书籍一向是耐不住性子去啃的，这里只推荐我自己看过的一些比较通俗易读的书。</p> <ul><li>《从根儿上理解mysql》</li> <li>《深入理解 JAVA 虚拟机》javaguide上的jvm知识用于搭建体系，这本书深入细节</li> <li>《码农翻身》对于初学者来说很有帮助，以拟人化的视角了解多线程等知识，趣味性很强，读来不吃力</li> <li>《图解计算机网络》</li> <li>《剑指offer》、《啊哈算法》简单易懂，适合入门</li></ul> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921999.png" loading="lazy" class="lazy"></p> <h3 id="学习方式"><a href="#学习方式" class="header-anchor">#</a> 学习方式</h3> <p>我主要推崇通过两种方式学习，但归根结底是一种思想。</p> <p>先提一个观点，<strong>表达和写代码一样，是程序员的核心素养</strong> 。</p> <p>表达能力不行，首先你面试通不过，就算技术能力过硬，那也是茶壶倒饺子，人家不能发现。其次就算你成功入职了，怎么和测试、产品对方案，你的思想别人没办法正确领会和接受。向老板工作汇报，怎么体现你的战功和武功？述职晋升的时候，怎么在短短半小时里打动评委？</p> <p><strong>所以，表达能力作为程序员软技能里的 Top one，它 hin 重要！！！</strong></p> <p>你是不是有点困惑，哎这部分不是讲学习方法的嘛，怎么又扯到表达上了？</p> <p>哎别急，我要说的学习方法，就是 <strong>通过表达来进行学习</strong> ，在学习的同时，又锻炼了自己的表达能力，一举两得，岂不妙哉~</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921834.png" loading="lazy" class="lazy"></p> <h4 id="文字表达"><a href="#文字表达" class="header-anchor">#</a> 文字表达</h4> <p>我猜无数人都和我一样，收集过网上各类人等分享出来的 XX 知识点大全，pdf 动辄几十 MB，然后下载保存关闭文件夹，三连操作一气呵成，感觉自己离大厂又更近了呢~</p> <p>然而现实是知识点保存之后只会默默躲在文件夹里吃灰，99% 的人这辈子都再也不会把它们翻出来。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921478.png" loading="lazy" class="lazy"></p> <p>我的观点是，知识点被整理出来的最大意义，只对于它们的整理者有用！整理知识点的过程，是整理者对于自己知识体系的系统梳理，不断在面试中完善的过程，调整自己的认知。只有你自己打出来的每行字，你才明白它要说的是什么，对于其他人来说，只剩下很小的参考意义。写笔记是个好习惯，值得长期坚持。</p> <p>可以自己搭建一个简单的个人博客，用 GitHub Page + jekyll，免费省心，半小时内搞定。软件强推 <strong>Typora</strong> ，此刻我就在用这个软件编辑这篇文章，MarkDown风格，优雅美观。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921050.png" loading="lazy" class="lazy"></p> <blockquote><p>Typora 管理笔记</p></blockquote> <blockquote><p>鱼皮：我在大学期间，也一直保持着记笔记、写博客的习惯，虽然文笔很差，但起码能帮助自己加深印象，便于日后复习和总结。当然，如果有时间，可以更加用心，试着把你的文章分享给其他小伙伴，看看他们能否理解。</p></blockquote> <h4 id="语言表达"><a href="#语言表达" class="header-anchor">#</a> 语言表达</h4> <p>相传，程序员届有一个古老的传说，桌面上有一只黄色小鸭子的程序员往往能在最短时间内解决自己写出来的bug。</p> <p>具体操作方式是，沐浴，更衣，焚香，然后双手合十，口中疾呼，急急如律令！debug 之神小黄鸭就会被召唤出来解决你的Bug。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921782.png" loading="lazy" class="lazy"></p> <p>不开玩笑了，其实这是著名的 <strong>小黄鸭调试法</strong> ，让你对着小黄鸭去讲解一遍这段代码自己的思路，用表达的方式去梳理自己的逻辑，通过这种方式找到潜藏的漏洞。听着玄乎，但却真实有效，很多时候，你以为你知道的内容其实并不清晰，学习知识也是一样，怎么判断一个知识点到底有没有掌握？就看你能不能自己独立把它讲述出来。</p> <p>或者有男 / 女朋友也可以，同道中人自然更好，拉着一起学习，互相促进；不是学计算机的也可以讲一些通用的知识，比如LeetCode上的股票买入时机、凑硬币问题，讲解一些智力题等等，既学到了知识，又增进了感情，工作和生活兼顾，实在是一件美事。</p> <p>不要嫌你的听众笨听不懂，听不懂只有一个原因：你讲得还不够深入浅出，你对知识的理解还不够扎实，再精美的高楼大厦也是由一块块不起眼的砖瓦搭建的，要相信任何知识点都可以用浅显易懂的方式表述出来，继续学习吧少年，再来一遍。</p> <blockquote><p>鱼皮：有时间的话，大家也可以试着把自己的讲解过程以视频的形式录制下来，像我现在做知识分享一样，能够很大地加深你对知识的理解和印象。</p></blockquote> <h3 id="求职技巧"><a href="#求职技巧" class="header-anchor">#</a> 求职技巧</h3> <h4 id="项目"><a href="#项目" class="header-anchor">#</a> 项目</h4> <p>我最初的项目是一个单体博客项目，但一个 <strong>简单的单体博客项目</strong> 是绝对满足不了面试官的期望的，尤其是在后端开发岗竞争尤为激烈的情况下，<strong>分布式、微服务</strong> 几乎是必备的技能，如果项目上没有体现出来，那么面试官必定会对这方面的知识点加以盘问。所以面一家挂一家。而 RPC 项目作为一个代码量本身不大的项目，更适合求职。</p> <p>以下几点说明：</p> <ul><li>使用到了网络编程框架、协调服务 Zookeeper、序列化框架 fastJson 等。</li> <li>在基础知识上，运用到了动态代理、反射、这些高阶一点的 Java 特性。</li> <li>可以聊聊性能相关的 qps，通过负载均衡的方式减轻单机压力等等，这方面可以聊的就多了，消息队列、Nginx 等，不过项目本身没有用到。</li></ul> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921953.jpeg" loading="lazy" class="lazy">RPC 远程调用</p> <p>项目指路：https://github.com/he2121/MyRPCFromZero</p> <p>项目一定要自己 <strong>一行一行手打</strong> 出来，不要偷懒，有不会的地方就去学习了解对应的内容。大概两周时间就够了，接下来要做的，就是整理一套自己对于项目理解的话术，并且不断通过面试官的反馈去调整自己的表达方式。一般面试开始的时候，自我介绍结束之后就是介绍项目环节，这段时间要着重展示自己的技术栈和亮点，为之后面试官的提问做好铺垫。项目的最大意义，是让面试官找到提问你的点，也就是所谓的 <strong>抓手</strong>。</p> <h4 id="自我介绍"><a href="#自我介绍" class="header-anchor">#</a> 自我介绍</h4> <p>建议分点，模板可以是 “总分总” 的形式，把自己的个人介绍分成校园生活、实习经历、个人技术栈等板块，分点介绍，这样不容易把面试官绕晕，能够很清晰地 get 到你的点。而每个大板块里又可以分几个小点，比如在实习期间做了哪些需求，在校期间的比赛、奖项等。一定要 <strong>条理分明</strong> ，否则你这边吹得天花乱坠，面试官听得云里雾里，效果不会好的。</p> <p>对于很多同学来说，包括我自己之前也是，没有实习，在校经历又乏善可陈，就容易感到困惑，我到底该介绍点什么好？</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921231.jpeg" loading="lazy" class="lazy"></p> <p>我觉得可以着重介绍自己最近在看的技术书籍、分享自己的收获，也不失为一种不错的方式，这样做的目的：</p> <ol><li>填充自我介绍时间，不会太过短暂</li> <li>引导面试官之后的提问，很可能就着重围绕你擅长的这方面</li> <li>个人印象分 up，容易给面试官一种善于自我驱动的感觉</li></ol> <p>你看，就像这样，分点陈述，是不是 so easy，妈妈再也不用担心我的自我介绍了~</p> <p>至于你到底看了什么书，就看个人兴趣了，我自己是在极客时间上买了一本《从根儿上理解 MySQL》。这本书个人认为是极好的，虽然到现在也没有全部看完，但是数据库的实现原理方面已经足够面试吹水用了，通过它我对于一些面经的理解更加深刻了，比如说，mysql怎么实现的 MVCC（多版本并发控制）、为什么被删掉的数据依然存储在硬盘中，怎么个存法、事务是怎么实现的等等，这些书中都有答案。而且一些细节问题我相信很多面试官也是不了解的，毕竟工作中用得不多，那么这就是你展示你的技术深度的时刻了，比起只会硬背面经的竞争者，是不是立马亮眼了起来？</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921882.png" loading="lazy" class="lazy"></p> <blockquote><p>鱼皮：自我介绍几乎是每轮面试开头都有的环节，至关重要，建议事先准备好一段话，多口述练习几遍。</p></blockquote> <h4 id="面试技巧"><a href="#面试技巧" class="header-anchor">#</a> 面试技巧</h4> <p>这一整年下来，从最初面试字节时说话都有些颤抖，到后来睡梦中迷迷糊糊接起电话就能聊（吹）个十分钟不带喘气的，我大概经历了技术面试 <strong>四十多场</strong> ，分享一些小技巧。</p> <p>其实面试的时候，碰到不了解的问题很正常，每个人都有自己的知识边界，面试官也未必全知全能。</p> <p>对面试官来说，问问题的目的不仅仅是询问你对单个知识点的理解，更是对你整个知识体系的全面考察，如果你这里不了解，但其他地方有深度，可以把面试官往那边引导。比如说面试官问到 IOC，你说 IOC 不是很了解，但可以讲讲 Spring 的另一块基石 AOP 巴拉巴拉（当然 IOC 不知道你已经没了，太过基础，这里只是简单举个例子）。</p> <p>总之，尽量避免长时间的停顿，会让气氛变得比较尴尬，进而影响接下来的发挥。</p> <p>其他方面就不多介绍了，对前期的求职者来说，每次面试机会都弥足珍贵，最好录音一下，面试完以后去 <strong>复盘</strong> ，从各个角度给自己挑刺，包括回答的语气是否有点尖刻、知识点是否回答完善等等。没把握的时候多找小厂练手，能力提升后再去面大厂，避免留下糟糕的面评。我今年投递快手无法通过简历筛选也许就是因为去年状态太差留下了糟糕的面评导致。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921763.png" loading="lazy" class="lazy"></p> <p><strong>有一些面试百分百会问到的问题必须准备：</strong></p> <ul><li>介绍下项目 / 实习中的亮点或者难点</li> <li>项目 / 实习中收获最大的是什么</li> <li>项目 / 实习中结合了哪些知识点</li> <li>反问环节：我一般必问的问题是面试官对自己的评价或者是建议。面试不是自娱自乐，你的表演效果如何，需要得到观众的评价。</li></ul> <p>面试的过程也是不断打磨自己面试技巧的手段，务必珍惜每个面试机会。比如我自己在今年春招的时候，由于有了实习经历，每次面试面试必问的一个问题就是让我介绍一下实习过程的项目。其实坦白说实习过程做的事情也没有多大难度，最开始我选择了一个业务场景相对复杂的需求，为了把这个需求讲透彻，自己整理了一大段关于背景的描述，一开始现场面试的时候感觉还好，配合当面纸笔画图描述，往往花费一定时间还能让面试官大致理解到我的点。后来视频面试甚至电话面试就发现，讲这个需求的 ROI（收益比）实在太低了，花费了大量时间，从面试官那里没有得到很强的正向反馈。所以后来我换了一件工作去介绍，效果就好了一些。</p> <blockquote><p>鱼皮：面试过程中的每一分钟都要把握住，尽量少说重复的、不能体现自己亮点的话；在回答面试官问题时，也要想清楚再说，不要自己乱说一通，到头来发现是错的。</p></blockquote> <h4 id="算法"><a href="#算法" class="header-anchor">#</a> 算法</h4> <p>其实现在我觉得算法只是一道门槛，对智力正常的 IT 从业者来说，只要花时间去练习，是肯定能达到要求的，一般公司即使是大厂也不会在这方面太过刁难。如果一上来就出一道 Hard（不常见的那种，超高频的接雨水、LRU、K 个链表等不在此列），只能说明这个面试官不讲武德，你和这个岗位还少点缘分，那挂掉倒也无妨，毕竟大厂还有很多。我自己是大概刷了 300 题不到，到达这个题量之后可能会发现，之前的题目基本上又忘光了，很好，可以来 <strong>第二遍</strong> 了。第二遍就会轻松很多，简单回忆一下，重点题一定要多练。</p> <p>最开始写算法的时候我发现自己快排怎么都记不下来，学了忘忘了学。后来有一周我给自己规定每天早上醒来就写一遍，一周后写这它已经不过脑子了，拿着键盘就是敲，形成了肌肉记忆。<strong>通过刻意练习，巩固所学，在理解的基础上去记忆。</strong> 还记得 OPPO 二面的时候我当场表演了手撕堆排、在滴滴表演手撕 LRU，这种比较长的算法写出来是很加分的。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921880.jpeg" loading="lazy" class="lazy"></p> <p>资源方面首推 LeetCode 的评论区，各路大神都会分享自己的题解。还有很多网红，什么甜姨啦，liweiwei，labuladong 等等，都各有特点。看到有人喷他们，感觉倒也大可不必，每个人的思路不同，不适合你的也许其他人能从中获益。我看题解一般就是，这篇看不懂，马上就换，不去死扣，多看几篇总有适合自己思路的解答，不懂就留言提问，一般都会积极回复的。</p> <p>课程方面只看过左神（左程云）的算法课，表达和编程的高手，配合上极富煽动力的语言和对题目轻蔑的语气，很容易给你一种自己能和他一样牛的错觉。在初学阶段入个门是极好的，19 年的时候基础版看过一遍。前阵子发现左神新课里顶着的新发型有点丑。。。我曾经可是他的颜粉啊，爷青结。。。。</p> <h4 id="面经"><a href="#面经" class="header-anchor">#</a> 面经</h4> <p>网上的各类面经已经堆积如山了，不想在这里贴太多基础面经，就分享一下最近让我印象比较深刻的 <strong>抖音一面</strong> 的问题吧。</p> <ol><li>ReentrantLock 如何实现（AQS 实现）</li> <li>go 中的线程安全，全局变量、channel 是否安全、GPM 模型、channel 的 buffer</li> <li>nginx 如何实现限流，令牌桶和漏桶的区别</li> <li>CAS 中的 AAB 问题怎么解决</li> <li>redis 跳表的数据结构</li> <li>扩容对 nginx 负载均衡策略的 ip 哈希产生的影响（往一致性哈希去答）</li> <li>缓存击穿问题，除了设置热点数据不过期以外的解决方案</li> <li>redis 扩容的具体实现方式</li></ol> <blockquote><p>鱼皮：这一轮面试的问题都是比较经典的后端 <strong>难题</strong> ，像锁、线程安全、限流、CAS、缓存没多做些准备感觉还是挺难答出来的。</p></blockquote> <p>阿里则偏爱 JVM 调优一类的问题。</p> <p>面抖音的时候又是时隔半年后春招第一次面试，不知怎么我总拿字节练手。。。其实也做了相对充足的准备，像去年一样闭关了一周，非常焦虑想要拿到 offer。一面的时候面试官提出了很多没有意料到的问题，算法还来了个 KMP，勉勉强强通过了，二面其实问题反而简单，没有意外，但是一些基础问题的细节没答好，还是没有通过。字节也算是心中的白月光吧，可惜越渴望好像就越得不到，阿里 oc 后字节 hr 又来约面试，拒绝了，以后社招有机会再面吧。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921941.png" loading="lazy" class="lazy"></p> <h2 id="总结"><a href="#总结" class="header-anchor">#</a> 总结</h2> <p>求职路漫漫，有个好心态非常重要，永远相信美好的事情即将发生（好像暴露米粉身份了）！</p> <p>抓住能让自己成长的每个机会，努力去做自己认为对的事情。</p> <p>成为一个乐观，皮实，自省的人，你我共勉。</p> <h2 id="答疑"><a href="#答疑" class="header-anchor">#</a> 答疑</h2> <h3 id="怎么讲实习项目"><a href="#怎么讲实习项目" class="header-anchor">#</a> 怎么讲实习项目？</h3> <p>首先实习绝对是巨大的优势，特别是大厂实习。工作中的流程，从捕捉需求，到设计技术方案、再到初步自测、给 mentor CR、给测试提测、再到上下游联调、灰度上线、全量上线这一套开发步骤是没有实习过的同学感受不到的。当面试官让你介绍实习做的事情的时候，虽然你很可能只是做做边角之类的辅助工作，接个小需求（像我一样），但可以适当地包装一下。具体怎么包装呢？</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921197.png" loading="lazy" class="lazy"></p> <p>第一，在实习期间就要多加注意，什么样的工作是能在面试中展示的，业务上的事情主要是 CRUD，对于系统代码的梳理，其实这部分是实习生工作的重点，但是对于不同赛道的面试官来说，很多时候很难 get 到你的点，不推荐讲业务。而涉及到数据库、网络之类的工作，属于技术人的必备技能，更适合去讲述，可以在实习期间就有目的性的去关注系统的 sql，有哪些可以优化的点，结合八股里的知识点，比如说联合索引、最左匹配之类的，好好挖掘一下，打造自己的亮点。</p> <p>第二，定期梳理，比如说每个月去整理一下这个月做了哪些事情，可以 <strong>主动</strong> 发月报给 mentor/leader 看，获取他们的意见，也防止实习期太长产生遗忘。</p> <blockquote><p>鱼皮：在工作中，总结真的非常重要！以后晋升答辩时，通常是要讲述你这段时间的工作情况的，如果不总结，很多自己做过的事可能就忘了，还可能会重复犯错。我是从实习期就开始记录自己的工作日常，到目前为止，已经快 <strong>两年</strong> 了。</p></blockquote> <h3 id="测试-测试开发相关问题"><a href="#测试-测试开发相关问题" class="header-anchor">#</a> 测试 / 测试开发相关问题</h3> <h4 id="面试难度是否更低"><a href="#面试难度是否更低" class="header-anchor">#</a> 面试难度是否更低？</h4> <p>这个是肯定的，通常意义下，测试/测试开发岗的面试难度普遍要更低一些。考察的技术栈和后端基本吻合，一些测试相关的知识稍作了解即可，确实是对自己技术不自信时进入大厂的一条捷径，基本上大厂里相同资历的测开和开发的薪资是相差无几的。</p> <h4 id="发展前景如何"><a href="#发展前景如何" class="header-anchor">#</a> 发展前景如何？</h4> <p>这个我也不好妄下定论，就把我了解到的一些信息贴出来仅做参考吧。首先由于第一点，测试岗的面试难度是要低于开发的，我觉得各有利弊吧。</p> <p>✅ 利是测试岗相对不那么内卷，努努力在技术上多打磨一下自己，比较容易崭露头角，成为团队中的核心骨干。其次是加班一般是没有开发那么多的，当然项目上线前总得来说还是很忙碌的。</p> <p>❌ 弊处是相对导致测试团队不那么受重视，分配到的资源较少，测试 Leader 如果不能在整个技术大团队中为团队争取，可能会导致晋升名额少或是团队整体绩效不高。</p> <p>综合来说，我觉得判断自己适不适合测试/测开首先要找准自己的定位，如果是对于技术不那么执着，不那么“爱卷”，把测开作为自己的职业也未必不是一个好的选择。</p> <hr> <p>看完这篇万字长文，不知道大家有什么感想？</p> <p>给我印象最深刻的有三点：</p> <ol><li>知耻而后勇：从第一次面试字节时的懵懂无知，到经历四十多次面试后拿下大厂的半壁江山，小六在这期间付出了太多的努力，天亮起凌晨睡、学了忘忘了学、在网吧刷 LeetCode，这些足以证明他的成功值得！</li> <li>善于学习：从小六的分享中也可以看出，他有自主学习方法（比如多种方式表达），同时乐于分享、善于总结，这些都是学好编程的助推剂，也是面试官渴望看到的闪光点。</li> <li>面对两次实习的抉择，果断出击，并且在实习过程中坚持学习，从不懈怠。</li></ol> <p>在秋招来临之季，很多同学可能都会面临和小六当时一样的选择，到底应该参与实习还是专心准备秋招呢？</p> <p>鱼皮认为，如果眼前实习机会还可以、并且此前又没有实习经历，那么 <strong>强烈建议参与实习</strong> ！并且在实习的日子里，也要持续准备秋招，哪怕请假也要参与面试。担心时间不够，那就趁早开始准备，付出更多的时间吧。</p> <p>好啦，以上就是本期分享，觉得不错的话，还请朋友们 <strong>点赞 + 在看</strong> 支持下，希望能帮助到更多同学 ❤️</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311070921649.png" loading="lazy" class="lazy"></p></div> <footer class="page-edit" style="margin:0;"><div class="edit-link"><a href="https://github.com/liyupi/codefather/edit/master/编程分享/求职经验/面经/从家里到阿里，学弟超神的一年.md" target="_blank" rel="noopener noreferrer">完善页面</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <div class="last-updated"><span class="prefix">最近更新:</span> <span class="time">11/11/2023, 8:17:47 PM</span></div></footer> <!----></div> <div class="toc-container-sidebar"><div class="pos-box"><div class="icon-arrow"></div> <div class="scroll-box" style="max-height:86vh"><div style="font-weight:bold;">从家里到阿里，学弟超神的一年</div> <hr> <div class="toc-box"><ul class="toc-sidebar-links"><li><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#求职故事" class="toc-sidebar-link">求职故事</a><ul class="toc-sidebar-sub-headers"><li class="toc-sidebar-sub-header"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#艰难起步" class="toc-sidebar-link">艰难起步</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#美的实习经历" class="toc-sidebar-link">美的实习经历</a></li><li class="toc-sidebar-sub-header"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#渐入佳境" class="toc-sidebar-link">渐入佳境</a></li><li class="toc-sidebar-sub-header"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#再战春招" class="toc-sidebar-link">再战春招</a></li></ul></li><li><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#干货分享" class="toc-sidebar-link">干货分享</a><ul class="toc-sidebar-sub-headers"><li class="toc-sidebar-sub-header"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#资源" class="toc-sidebar-link">资源</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#求职必备-app-小程序-网站" class="toc-sidebar-link">求职必备 App / 小程序 / 网站</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#学习书籍" class="toc-sidebar-link">学习书籍</a></li><li class="toc-sidebar-sub-header"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#学习方式" class="toc-sidebar-link">学习方式</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#文字表达" class="toc-sidebar-link">文字表达</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#语言表达" class="toc-sidebar-link">语言表达</a></li><li class="toc-sidebar-sub-header"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#求职技巧" class="toc-sidebar-link">求职技巧</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#项目" class="toc-sidebar-link">项目</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#自我介绍" class="toc-sidebar-link">自我介绍</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#面试技巧" class="toc-sidebar-link">面试技巧</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#算法" class="toc-sidebar-link">算法</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#面经" class="toc-sidebar-link">面经</a></li></ul></li><li><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#总结" class="toc-sidebar-link">总结</a><ul class="toc-sidebar-sub-headers"></ul></li><li><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#答疑" class="toc-sidebar-link">答疑</a><ul class="toc-sidebar-sub-headers"><li class="toc-sidebar-sub-header"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#怎么讲实习项目" class="toc-sidebar-link">怎么讲实习项目？</a></li><li class="toc-sidebar-sub-header"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#测试-测试开发相关问题" class="toc-sidebar-link">测试 / 测试开发相关问题</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#面试难度是否更低" class="toc-sidebar-link">面试难度是否更低？</a></li><li class="toc-sidebar-sub-header toc-sidebar-depth-4"><a href="/%E4%BB%8E%E5%AE%B6%E9%87%8C%E5%88%B0%E9%98%BF%E9%87%8C-%E5%AD%A6%E5%BC%9F%E8%B6%85%E7%A5%9E%E7%9A%84%E4%B8%80%E5%B9%B4/#发展前景如何" class="toc-sidebar-link">发展前景如何？</a></li></ul></li></ul></div></div></div></div></div>  <main class="footer"> <div class="copy-right"><span class="name"> 编程导航   |     </span> <a target="_blank" rel="noreferrer">
          
        </a></div></main></main> <aside class="page-sidebar"> <div class="page-side-toolbar"></div>  </aside></div><div class="global-ui"><!----></div></div>
    <script src="/assets/js/app.12ab4756.js" defer></script><script src="/assets/js/2.fd06b53e.js" defer></script><script src="/assets/js/308.ef2f52b3.js" defer></script>
  </body>
</html>
